/* * ejabberd, Copyright (C) 2002-2014 ProcessOne * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA * 02111-1307 USA * */ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO use [ejabber] GO ALTER DATABASE CURRENT SET AUTO_CLOSE OFF ALTER DATABASE CURRENT SET RECOVERY BULK_LOGGED ALTER DATABASE CURRENT SET RECOVERY FULL ALTER DATABASE CURRENT SET TORN_PAGE_DETECTION ON ALTER DATABASE CURRENT SET READ_WRITE ALTER DATABASE CURRENT SET MULTI_USER ALTER DATABASE CURRENT SET MULTI_USER ALTER DATABASE CURRENT SET AUTO_SHRINK OFF ALTER DATABASE CURRENT SET ANSI_NULL_DEFAULT OFF ALTER DATABASE CURRENT SET RECURSIVE_TRIGGERS OFF ALTER DATABASE CURRENT SET ANSI_NULLS OFF ALTER DATABASE CURRENT SET CONCAT_NULL_YIELDS_NULL OFF ALTER DATABASE CURRENT SET CURSOR_CLOSE_ON_COMMIT OFF ALTER DATABASE CURRENT SET CURSOR_DEFAULT GLOBAL ALTER DATABASE CURRENT SET QUOTED_IDENTIFIER OFF ALTER DATABASE CURRENT SET ANSI_WARNINGS OFF ALTER DATABASE CURRENT SET AUTO_CREATE_STATISTICS ON if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[last]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[last] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[rostergroups]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[rostergroups] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[rosterusers]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[rosterusers] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[spool]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[spool] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[users]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[users] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vcard]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[vcard] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vcard_search]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[vcard_search] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[private_storage]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[private_storage] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[privacy_default_list]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[privacy_default_list] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[privacy_list]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[privacy_list] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[privacy_list_data]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[privacy_list_data] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[roster_version]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[roster_version] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[pubsub_node_option]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[pubsub_node_option] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[pubsub_node_owner]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[pubsub_node_owner] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[pubsub_state]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[pubsub_state] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[pubsub_item]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[pubsub_item] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[pubsub_subscription_opt]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[pubsub_subscription_opt] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[pubsub_node]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[pubsub_node] GO CREATE TABLE [dbo].[last] ( [username] [varchar] (250) NOT NULL , [seconds] [varchar] (50) NOT NULL , [state] [varchar] (100) NOT NULL , [Modify_Date] [datetime] NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[rostergroups] ( [username] [varchar] (250) NOT NULL , [jid] [varchar] (250) NOT NULL , [grp] [varchar] (100) NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[rosterusers] ( [username] [varchar] (250) NOT NULL , [jid] [varchar] (250) NOT NULL , [nick] [varchar] (50) NOT NULL , [subscription] [char] (1) NOT NULL , [ask] [char] (1) NOT NULL , [askmessage] [varchar] (250) NOT NULL , [server] [char] (1) NOT NULL , [subscribe] [varchar] (200) NULL , [type] [varchar] (50) NULL , CONSTRAINT [PK_rosterusers] PRIMARY KEY NONCLUSTERED ( [username] ASC, [jid] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO CREATE TABLE [dbo].[spool] ( [id] [numeric](19, 0) IDENTITY (1, 1) NOT NULL , [username] [varchar] (250) NOT NULL , [xml] [text] NOT NULL , [notifyprocessed] [bit] NULL , [created] [datetime] NULL , [MustDelete] [bit] NOT NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO CREATE TABLE [dbo].[users] ( [username] [varchar] (250) NOT NULL , [password] [varchar] (50) NOT NULL , [created] [datetime] NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[vcard] ( [username] [varchar] (250) NOT NULL , [vcard] [text] NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[vcard_search] ( [username] [varchar] (250) NOT NULL , [lusername] [varchar] (250) NOT NULL , [fn] [text] NOT NULL , [lfn] [varchar] (250) NOT NULL , [family] [text] NOT NULL , [lfamily] [varchar] (250) NOT NULL , [given] [text] NOT NULL , [lgiven] [varchar] (250) NOT NULL , [middle] [text] NOT NULL , [lmiddle] [varchar] (250) NOT NULL , [nickname] [text] NOT NULL , [lnickname] [varchar] (250) NOT NULL , [bday] [text] NOT NULL , [lbday] [varchar] (250) NOT NULL , [ctry] [text] NOT NULL , [lctry] [varchar] (250) NOT NULL , [locality] [text] NOT NULL , [llocality] [varchar] (250) NOT NULL , [email] [text] NOT NULL , [lemail] [varchar] (250) NOT NULL , [orgname] [text] NOT NULL , [lorgname] [varchar] (250) NOT NULL , [orgunit] [text] NOT NULL , [lorgunit] [varchar] (250) NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[private_storage] ( [username] [varchar] (250) NOT NULL , [namespace] [varchar] (250) NOT NULL , [data] [text] NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[privacy_default_list] ( [username] [varchar] (250) NOT NULL, [name] [varchar] (250) NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[privacy_list]( [username] [varchar](250) NOT NULL, [name] [varchar](250) NOT NULL, [id] [bigint] IDENTITY(1,1) NOT NULL, CONSTRAINT [PK_privacy_list] PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO CREATE TABLE [dbo].[privacy_list_data] ( [id] [bigint] NOT NULL, [t] [character] (1) NOT NULL, [value] [text] NOT NULL, [action] [character] (1) NOT NULL, [ord] [NUMERIC] NOT NULL, [match_all] [bit] NOT NULL, [match_iq] [bit] NOT NULL, [match_message] [bit] NOT NULL, [match_presence_in] [bit] NOT NULL, [match_presence_out] [bit] NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[roster_version] ( [username] [varchar](250) PRIMARY KEY, [version] [text] NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[pubsub_node] ( [host] [varchar](250), [node] [varchar](250), [parent] [varchar](250), [type] [varchar](250), [nodeid] [bigint] IDENTITY(1,1) PRIMARY KEY ) ON [PRIMARY] GO CREATE TABLE [dbo].[pubsub_node_option] ( [nodeid] [bigint], [name] [varchar](250), [val] [varchar](250) ) ON [PRIMARY] GO CREATE TABLE [dbo].[pubsub_node_owner] ( [nodeid] [bigint], [owner] [varchar](250) ) ON [PRIMARY] GO CREATE TABLE [dbo].[pubsub_state] ( [nodeid] [bigint], [jid] [varchar](250), [affiliation] [CHAR](1), [subscriptions] [text], [stateid] [bigint] IDENTITY(1,1) PRIMARY KEY ) ON [PRIMARY] GO CREATE TABLE [dbo].[pubsub_item] ( [nodeid] [bigint], [itemid] [varchar](250), [publisher] [text], [creation] [text], [modification] [text], [payload] [text] ) ON [PRIMARY] GO CREATE TABLE [dbo].[pubsub_subscription_opt] ( [subid] [varchar](250), [opt_name] [varchar](32), [opt_value] [text] ) ON [PRIMARY] GO /* Constraints to add: - id in privacy_list is a SERIAL autogenerated number - id in privacy_list_data must exist in the table privacy_list */ ALTER TABLE [dbo].[last] WITH NOCHECK ADD CONSTRAINT [PK_last] PRIMARY KEY CLUSTERED ( [username] ) WITH FILLFACTOR = 90 ON [PRIMARY] GO ALTER TABLE [dbo].[rostergroups] WITH NOCHECK ADD CONSTRAINT [PK_rostergroups] PRIMARY KEY CLUSTERED ( [username], [jid], [grp] ) WITH FILLFACTOR = 90 ON [PRIMARY] GO ALTER TABLE [dbo].[spool] WITH NOCHECK ADD CONSTRAINT [PK_spool] PRIMARY KEY CLUSTERED ( [username], [id] ) WITH FILLFACTOR = 90 ON [PRIMARY] GO ALTER TABLE [dbo].[users] WITH NOCHECK ADD CONSTRAINT [PK_users] PRIMARY KEY CLUSTERED ( [username] ) WITH FILLFACTOR = 90 ON [PRIMARY] GO ALTER TABLE [dbo].[vcard] WITH NOCHECK ADD CONSTRAINT [PK_vcard] PRIMARY KEY CLUSTERED ( [username] ) WITH FILLFACTOR = 90 ON [PRIMARY] GO ALTER TABLE [dbo].[pubsub_node_option] WITH NOCHECK ADD CONSTRAINT [FK_pubsub_node_option] FOREIGN KEY ( [nodeid] ) REFERENCES [dbo].[pubsub_node] ( [nodeid] ) ON DELETE CASCADE GO ALTER TABLE [dbo].[pubsub_node_owner] WITH NOCHECK ADD CONSTRAINT [FK_pubsub_node_owner] FOREIGN KEY ( [nodeid] ) REFERENCES [pubsub_node] ( [nodeid] ) ON DELETE CASCADE GO ALTER TABLE [dbo].[pubsub_state] WITH NOCHECK ADD CONSTRAINT [FK_pubsub_state] FOREIGN KEY ( [nodeid] ) REFERENCES [pubsub_node] ( [nodeid] ) ON DELETE CASCADE GO ALTER TABLE [dbo].[pubsub_item] WITH NOCHECK ADD CONSTRAINT [FK_pubsub_item] FOREIGN KEY ( [nodeid] ) REFERENCES [pubsub_node] ( [nodeid] ) ON DELETE CASCADE GO CREATE INDEX [IX_vcard_search_lfn] ON [dbo].[vcard_search]([lfn]) WITH FILLFACTOR = 90 ON [PRIMARY] GO CREATE INDEX [IX_vcard_search_lfamily] ON [dbo].[vcard_search]([lfamily]) WITH FILLFACTOR = 90 ON [PRIMARY] GO CREATE INDEX [IX_vcard_search_lgiven] ON [dbo].[vcard_search]([lgiven]) WITH FILLFACTOR = 90 ON [PRIMARY] GO CREATE INDEX [IX_vcard_search_lmiddle] ON [dbo].[vcard_search]([lmiddle]) WITH FILLFACTOR = 90 ON [PRIMARY] GO CREATE INDEX [IX_vcard_search_lnickname] ON [dbo].[vcard_search]([lnickname]) WITH FILLFACTOR = 90 ON [PRIMARY] GO CREATE INDEX [IX_vcard_search_lbday] ON [dbo].[vcard_search]([lbday]) WITH FILLFACTOR = 90 ON [PRIMARY] GO CREATE INDEX [IX_vcard_search_lctry] ON [dbo].[vcard_search]([lctry]) WITH FILLFACTOR = 90 ON [PRIMARY] GO CREATE INDEX [IX_vcard_search_llocality] ON [dbo].[vcard_search]([llocality]) WITH FILLFACTOR = 90 ON [PRIMARY] GO CREATE INDEX [IX_vcard_search_lemail] ON [dbo].[vcard_search]([lemail]) WITH FILLFACTOR = 90 ON [PRIMARY] GO CREATE INDEX [IX_vcard_search_lorgname] ON [dbo].[vcard_search]([lorgname]) WITH FILLFACTOR = 90 ON [PRIMARY] GO CREATE INDEX [IX_vcard_search_lorgunit] ON [dbo].[vcard_search]([lorgunit]) WITH FILLFACTOR = 90 ON [PRIMARY] GO CREATE CLUSTERED INDEX [IX_rosterusers_user] ON [dbo].[rosterusers]([username]) WITH FILLFACTOR = 90 ON [PRIMARY] GO ALTER TABLE [dbo].[last] WITH NOCHECK ADD CONSTRAINT [DF_last_updated] DEFAULT (getdate()) FOR [Modify_Date] GO ALTER TABLE [dbo].[spool] WITH NOCHECK ADD CONSTRAINT [DF_spool_notifyprocessed] DEFAULT (0) FOR [notifyprocessed], CONSTRAINT [DF_spool_created] DEFAULT (getdate()) FOR [created], CONSTRAINT [DF_spool_MustDelete] DEFAULT (0) FOR [MustDelete] GO ALTER TABLE [dbo].[users] WITH NOCHECK ADD CONSTRAINT [DF_users_created] DEFAULT (getdate()) FOR [created] GO ALTER TABLE [dbo].[privacy_default_list] WITH NOCHECK ADD CONSTRAINT [PK_privacy_defaut_list] PRIMARY KEY CLUSTERED ( [username] ) WITH FILLFACTOR = 90 ON [PRIMARY] GO CREATE INDEX [IX_rostergroups_jid] ON [dbo].[rostergroups]([jid]) WITH FILLFACTOR = 90 ON [PRIMARY] GO CREATE INDEX [IX_rostergroups_user] ON [dbo].[rostergroups]([username]) WITH FILLFACTOR = 90 ON [PRIMARY] GO CREATE INDEX [IX_spool_user] ON [dbo].[spool]([username]) WITH FILLFACTOR = 90 ON [PRIMARY] GO CREATE INDEX [IX_spool_process] ON [dbo].[spool]([created], [notifyprocessed]) WITH FILLFACTOR = 90 ON [PRIMARY] GO CREATE INDEX [IK_Spool_Del] ON [dbo].[spool]([MustDelete]) WITH FILLFACTOR = 90 ON [PRIMARY] GO CREATE INDEX [IK_Spool_Created] ON [dbo].[spool]([created]) WITH FILLFACTOR = 90 ON [PRIMARY] GO CREATE INDEX [IX_private_user] ON [dbo].[private_storage]([username]) WITH FILLFACTOR = 90 ON [PRIMARY] GO CREATE INDEX [IX_private_user_ns] ON [dbo].[private_storage]([username], [namespace]) WITH FILLFACTOR = 90 ON [PRIMARY] GO CREATE INDEX [IX_privacy_list_username] ON [dbo].[privacy_list]([username]) WITH FILLFACTOR = 90 ON [PRIMARY] GO CREATE INDEX [IX_privacy_list_username_name] ON [dbo].[privacy_list]([username], [name]) WITH FILLFACTOR = 90 ON [PRIMARY] GO CREATE INDEX [IX_pubsub_node_parent] ON [dbo].[pubsub_node]([parent]) WITH FILLFACTOR = 90 ON [PRIMARY] GO CREATE INDEX [IX_pubsub_node_tuple] ON [dbo].[pubsub_node]([host], [node]) WITH FILLFACTOR = 90 ON [PRIMARY] GO CREATE INDEX [IX_pubsub_node_option_nodeid] ON [dbo].[pubsub_node_option]([nodeid]) WITH FILLFACTOR = 90 ON [PRIMARY] GO CREATE INDEX [IX_pubsub_node_owner_nodeid] ON [dbo].[pubsub_node_owner]([nodeid]) WITH FILLFACTOR = 90 ON [PRIMARY] GO CREATE INDEX [IX_pubsub_state_jid] ON [dbo].[pubsub_state]([jid]) WITH FILLFACTOR = 90 ON [PRIMARY] GO CREATE INDEX [IX_pubsub_state_tuple] ON [dbo].[pubsub_state]([nodeid], [jid]) WITH FILLFACTOR = 90 ON [PRIMARY] GO CREATE INDEX [IX_pubsub_item_itemid] ON [dbo].[pubsub_item]([itemid]) WITH FILLFACTOR = 90 ON [PRIMARY] GO CREATE INDEX [IX_pubsub_item_tuple] ON [dbo].[pubsub_item]([nodeid], [itemid]) WITH FILLFACTOR = 90 ON [PRIMARY] GO CREATE INDEX [IX_pubsub_subscription_opt] ON [dbo].[pubsub_subscription_opt]([subid], [opt_name]) WITH FILLFACTOR = 90 ON [PRIMARY] Go /*********************************************************/ /** These store procedures are for use with ejabberd **/ /** 1.1 and Microsoft Sql Server 2000 **/ /** **/ /** The stored procedures reduce the need to sql **/ /** compilation of the database and also allow for also **/ /** provide each of database integration. The stored **/ /** procedure have been optimized to increase database **/ /** performance and a reduction of 80% in CPU was **/ /** achieved over the use of standard sql. **/ /*********************************************************/ /****** Object: StoredProcedure [dbo].[add_roster] ******/ /** Add or update user entries in the roster **/ /*********************************************************/ IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[add_roster]') AND type in (N'P', N'PC')) DROP PROCEDURE [dbo].[add_roster] GO IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[add_roster_group]') AND type in (N'P', N'PC')) DROP PROCEDURE [dbo].[add_roster_group] GO IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[add_roster_user]') AND type in (N'P', N'PC')) DROP PROCEDURE [dbo].[add_roster_user] GO IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[del_roster_groups]') AND type in (N'P', N'PC')) DROP PROCEDURE [dbo].[del_roster_groups] GO IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[add_spool]') AND type in (N'P', N'PC')) DROP PROCEDURE [dbo].[add_spool] GO IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[add_user]') AND type in (N'P', N'PC')) DROP PROCEDURE [dbo].[add_user] GO IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[set_password]') AND type in (N'P', N'PC')) DROP PROCEDURE [dbo].[set_password] GO IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[clean_spool_msg]') AND type in (N'P', N'PC')) DROP PROCEDURE [dbo].[clean_spool_msg] GO IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[get_password]') AND type in (N'P', N'PC')) DROP PROCEDURE [dbo].[get_password] GO IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[del_last]') AND type in (N'P', N'PC')) DROP PROCEDURE [dbo].[del_last] GO IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[del_roster]') AND type in (N'P', N'PC')) DROP PROCEDURE [dbo].[del_roster] GO IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[del_spool_msg]') AND type in (N'P', N'PC')) DROP PROCEDURE [dbo].[del_spool_msg] GO IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[del_user]') AND type in (N'P', N'PC')) DROP PROCEDURE [dbo].[del_user] GO IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[del_user_return_password]') AND type in (N'P', N'PC')) DROP PROCEDURE [dbo].[del_user_return_password] GO IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[del_user_roster]') AND type in (N'P', N'PC')) DROP PROCEDURE [dbo].[del_user_roster] GO IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[get_and_del_spool_msg]') AND type in (N'P', N'PC')) DROP PROCEDURE [dbo].[get_and_del_spool_msg] GO IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[get_last]') AND type in (N'P', N'PC')) DROP PROCEDURE [dbo].[get_last] GO IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[get_roster]') AND type in (N'P', N'PC')) DROP PROCEDURE [dbo].[get_roster] GO IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[get_roster_by_jid]') AND type in (N'P', N'PC')) DROP PROCEDURE [dbo].[get_roster_by_jid] GO IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[get_roster_jid_groups]') AND type in (N'P', N'PC')) DROP PROCEDURE [dbo].[get_roster_jid_groups] GO IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[get_roster_groups]') AND type in (N'P', N'PC')) DROP PROCEDURE [dbo].[get_roster_groups] GO IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[get_rostergroup_by_jid]') AND type in (N'P', N'PC')) DROP PROCEDURE [dbo].[get_rostergroup_by_jid] GO IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[get_subscription]') AND type in (N'P', N'PC')) DROP PROCEDURE [dbo].[get_subscription] GO IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[list_users]') AND type in (N'P', N'PC')) DROP PROCEDURE [dbo].[list_users] GO IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[set_last]') AND type in (N'P', N'PC')) DROP PROCEDURE [dbo].[set_last] GO IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[set_private_data]') AND type in (N'P', N'PC')) DROP PROCEDURE [dbo].[set_private_data] GO IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[get_private_data]') AND type in (N'P', N'PC')) DROP PROCEDURE [dbo].[get_private_data] GO IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[del_user_storage]') AND type in (N'P', N'PC')) DROP PROCEDURE [dbo].[del_user_storage] GO IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[set_vcard]') AND type in (N'P', N'PC')) DROP PROCEDURE [dbo].[set_vcard] GO IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[get_vcard]') AND type in (N'P', N'PC')) DROP PROCEDURE [dbo].[get_vcard] GO IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[get_default_privacy_list]') AND type in (N'P', N'PC')) DROP PROCEDURE [dbo].[get_default_privacy_list] GO IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[get_privacy_list_names]') AND type in (N'P', N'PC')) DROP PROCEDURE [dbo].[get_privacy_list_names] GO IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[get_privacy_list_id]') AND type in (N'P', N'PC')) DROP PROCEDURE [dbo].[get_privacy_list_id] GO IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[get_privacy_list_data]') AND type in (N'P', N'PC')) DROP PROCEDURE [dbo].[get_privacy_list_data] GO IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[get_privacy_list_data_by_id]') AND type in (N'P', N'PC')) DROP PROCEDURE [dbo].[get_privacy_list_data_by_id] GO IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[set_default_privacy_list]') AND type in (N'P', N'PC')) DROP PROCEDURE [dbo].[set_default_privacy_list] GO IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[unset_default_privacy_list]') AND type in (N'P', N'PC')) DROP PROCEDURE [dbo].[unset_default_privacy_list] GO IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[remove_privacy_list]') AND type in (N'P', N'PC')) DROP PROCEDURE [dbo].[remove_privacy_list] GO IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[add_privacy_list]') AND type in (N'P', N'PC')) DROP PROCEDURE [dbo].[add_privacy_list] GO IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[set_privacy_list]') AND type in (N'P', N'PC')) DROP PROCEDURE [dbo].[set_privacy_list] GO IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[del_privacy_list_by_id]') AND type in (N'P', N'PC')) DROP PROCEDURE [dbo].[del_privacy_list_by_id] GO IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[del_privacy_lists]') AND type in (N'P', N'PC')) DROP PROCEDURE [dbo].[del_privacy_lists] GO CREATE PROCEDURE [dbo].[add_roster] @Username varchar(250), @JID varchar(250), @Nick varchar(50), @Subscription char(1), @Ask char(1), @AskMessage varchar(250), @Server char(1), @Subscribe varchar(200), @Type varchar(50), @Grp varchar(100) AS BEGIN BEGIN TRANSACTION --- Update Roster if user exist else add roster item IF EXISTS (SELECT username FROM rosterusers WITH (NOLOCK) WHERE rosterusers.username=@Username AND rosterusers.jid=@JID) BEGIN UPDATE rosterusers SET rosterusers.username=@Username, rosterusers.jid=@JID, rosterusers.nick=@Nick, rosterusers.subscription=@Subscription, rosterusers.ask=@Ask, rosterusers.askmessage=@AskMessage, rosterusers.server=@Server, rosterusers.subscribe=@Subscribe, rosterusers.type=@Type WHERE (rosterusers.username=@Username) AND (rosterusers.jid=@JID); END ELSE BEGIN INSERT INTO rosterusers ( rosterusers.username, rosterusers.jid, rosterusers.nick, rosterusers.subscription, rosterusers.ask, rosterusers.askmessage, rosterusers.server, rosterusers.subscribe, rosterusers.type ) VALUES ( @Username, @JID, @Nick, @Subscription, @Ask, @AskMessage, @Server, @Subscribe, @Type ); END --- Update Roster Groups if exist else add group entry IF NOT EXISTS (SELECT username FROM rostergroups WITH (NOLOCK) WHERE rostergroups.username=@Username AND rostergroups.jid=@JID AND rostergroups.grp=@Grp) BEGIN INSERT INTO rostergroups ( rostergroups.username, rostergroups.jid, rostergroups.grp ) VALUES ( @Username, @JID, @Grp ); END COMMIT END GO /***************************************************************/ /****** Object: StoredProcedure [dbo].[add_roster_group] ******/ /** Add or update user group entries in the roster groups **/ /***************************************************************/ CREATE PROCEDURE [dbo].[add_roster_group] @Username varchar(250), @JID varchar(250), @Grp varchar(100) AS BEGIN --- Update Roster Groups if exist else add group IF NOT EXISTS (SELECT username FROM rostergroups WHERE rostergroups.username=@Username AND rostergroups.jid=@JID AND rostergroups.grp=@Grp) BEGIN INSERT INTO rostergroups ( rostergroups.username, rostergroups.jid, rostergroups.grp ) VALUES ( @Username, @JID, @Grp ) END END GO /***************************************************************/ /****** Object: StoredProcedure [dbo].[add_roster_user] ******/ /** Add or update user entries in the roster **/ /***************************************************************/ CREATE PROCEDURE [dbo].[add_roster_user] @Username varchar(250), @JID varchar(250), @Nick varchar(50), @Subscription char(1), @Ask char(1), @AskMessage varchar(250), @Server char(1), @Subscribe varchar(200), @Type varchar(50), @Grp varchar(100) = Null AS BEGIN BEGIN TRANSACTION --- Update Roster Users if exist of add new user IF EXISTS (SELECT username FROM rosterusers WHERE rosterusers.username=@Username AND rosterusers.jid=@JID) BEGIN UPDATE rosterusers SET rosterusers.username=@Username, rosterusers.jid=@JID, rosterusers.nick=@Nick, rosterusers.subscription=@Subscription, rosterusers.ask=@Ask, rosterusers.askmessage=@AskMessage, rosterusers.server=@Server, rosterusers.subscribe=@Subscribe, rosterusers.type=@Type WHERE (rosterusers.username=@Username) AND (rosterusers.jid=@JID); END ELSE BEGIN INSERT INTO rosterusers ( rosterusers.username, rosterusers.jid, rosterusers.nick, rosterusers.subscription, rosterusers.ask, rosterusers.askmessage, rosterusers.server, rosterusers.subscribe, rosterusers.type ) VALUES ( @Username, @JID, @Nick, @Subscription, @Ask, @AskMessage, @Server, @Subscribe, @Type ); END --- Update Roster Group if exist of add new group IF @Grp IS NOT NULL EXECUTE [dbo].[add_roster_group] @Username, @JID, @Grp COMMIT END GO /***************************************************************/ /****** Object: StoredProcedure [dbo].[del_roster_groups] ******/ /** Remove user group entries from the roster groups table **/ /***************************************************************/ CREATE PROCEDURE [dbo].[del_roster_groups] @Username varchar(250), @JID varchar(250) AS BEGIN DELETE FROM rostergroups WITH (ROWLOCK) WHERE (rostergroups.username = @Username) AND (rostergroups.jid = @JID); END GO /***************************************************************/ /****** Object: StoredProcedure [dbo].[add_spool] ******/ /** Add a entry to the spool table **/ /***************************************************************/ CREATE PROCEDURE [dbo].[add_spool] @Username varchar(250), @XML varchar(8000) AS BEGIN INSERT INTO spool ( spool.username, spool.xml ) VALUES ( @Username, @XML ) END GO /***************************************************************/ /****** Object: StoredProcedure [dbo].[add_user] ******/ /** Add or update user entries to jabber **/ /***************************************************************/ CREATE PROCEDURE [dbo].[add_user] @Username varchar(200), @Password varchar(50) AS BEGIN INSERT INTO users ( [username], [password] ) VALUES ( @Username, @Password ); END GO /******************************************************************/ /****** Object: StoredProcedure [dbo].[set_password] **/ /** Update users password **/ /******************************************************************/ CREATE PROCEDURE [dbo].[set_password] @Username varchar(200), @Password varchar(50) AS BEGIN IF EXISTS (SELECT username FROM users WITH (NOLOCK) WHERE username=@Username) BEGIN UPDATE users SET username=@Username, password=@Password WHERE username=@Username; END ELSE BEGIN INSERT INTO users (username, password) VALUES (@Username, @Password); END END GO /******************************************************************/ /****** Object: StoredProcedure [dbo].[get_password] **/ /** Retrive the user password **/ /******************************************************************/ CREATE PROCEDURE [dbo].[get_password] @Username varchar(200) AS BEGIN SELECT users.password as password FROM users WITH (NOLOCK) WHERE username=@Username; END GO /******************************************************************/ /****** Object: StoredProcedure [dbo].[set_roster_version] **/ /** Update users roster_version **/ /******************************************************************/ CREATE PROCEDURE [dbo].[set_roster_version] @Username varchar(200), @Version varchar(8000) AS BEGIN IF EXISTS (SELECT username FROM roster_version WITH (NOLOCK) WHERE username=@Username) BEGIN UPDATE roster_version SET username=@Username, version=@Version WHERE username=@Username; END ELSE BEGIN INSERT INTO roster_version (username, version) VALUES (@Username, @Version); END END GO /******************************************************************/ /****** Object: StoredProcedure [dbo].[get_roster_version] **/ /** Retrive the user roster_version **/ /******************************************************************/ CREATE PROCEDURE [dbo].[get_roster_version] @Username varchar(200) AS BEGIN SELECT roster_version.version as version FROM roster_version WITH (NOLOCK) WHERE username=@Username; END GO /***************************************************************/ /****** Object: StoredProcedure [dbo].[clean_spool_msg] ******/ /** Delete messages older that 3 days from spool **/ /***************************************************************/ CREATE PROCEDURE [dbo].[clean_spool_msg] AS DECLARE @dt datetime, @myRowCount int BEGIN -- Delete small amounts because if locks the database table SET ROWCOUNT 500 SET @myRowCount = 1 WHILE (@myRowCount) > 0 BEGIN BEGIN TRANSACTION SELECT @dt = DATEADD(d, -3, GETDATE()) DELETE FROM spool WITH (ROWLOCK) WHERE (MustDelete=1) OR (Created < @dt); SET @myRowCount = @@RowCount COMMIT END END GO /***************************************************************/ /****** Object: StoredProcedure [dbo].[del_last] ******/ /** Delete an entry from the last table **/ /***************************************************************/ CREATE PROCEDURE [dbo].[del_last] @Username varchar(250) AS BEGIN DELETE FROM [last] WITH (ROWLOCK) WHERE [last].username=@Username; END GO /***************************************************************/ /****** Object: StoredProcedure [dbo].[del_roster] ******/ /** Delete an entry from the roster **/ /***************************************************************/ CREATE PROCEDURE [dbo].[del_roster] @Username varchar(250), @JID varchar(250) AS BEGIN BEGIN TRANSACTION DELETE FROM rosterusers WITH (ROWLOCK) WHERE (rosterusers.username = @Username) AND (rosterusers.jid = @JID); DELETE FROM rostergroups WITH (ROWLOCK) WHERE (rostergroups.username = @Username) AND (rostergroups.jid = @JID); COMMIT END GO /***************************************************************/ /****** Object: StoredProcedure [dbo].[del_spool_msg] ******/ /** Delete an entry from the spool table **/ /***************************************************************/ CREATE PROCEDURE [dbo].[del_spool_msg] @Username varchar(250) AS BEGIN DELETE FROM spool WITH (ROWLOCK) WHERE spool.username=@Username; END GO /***************************************************************/ /****** Object: StoredProcedure [dbo].[del_user] ******/ /** Delete an entry from the user table **/ /***************************************************************/ CREATE PROCEDURE [dbo].[del_user] @Username varchar(200) AS BEGIN DELETE FROM users WITH (ROWLOCK) WHERE username=@Username; END GO /******************************************************************/ /****** Object: StoredProcedure [dbo].[del_user_return_password]**/ /** Delete an entry from the user table and return user password **/ /******************************************************************/ CREATE PROCEDURE [dbo].[del_user_return_password] @Username varchar(250) AS DECLARE @Pwd varchar(50) BEGIN EXECUTE @Pwd = dbo.get_password @Username DELETE FROM users WITH (ROWLOCK) WHERE username=@Username SELECT @Pwd; END GO /******************************************************************/ /****** Object: StoredProcedure [dbo].[del_user_roster] **/ /** Delete the users roster **/ /******************************************************************/ CREATE PROCEDURE [dbo].[del_user_roster] @Username varchar(250) AS BEGIN BEGIN TRANSACTION DELETE FROM rosterusers WITH (ROWLOCK) WHERE rosterusers.username = @Username; DELETE FROM rostergroups WITH (ROWLOCK) WHERE rostergroups.username = @Username; COMMIT END GO /******************************************************************/ /****** Object: StoredProcedure [dbo].[get_and_del_spool_msg] **/ /** Fetch and delete the users offline messages **/ /******************************************************************/ CREATE PROCEDURE [dbo].[get_and_del_spool_msg] @Username varchar(250) AS DECLARE @vSpool table( username varchar(1), xml varchar(1)) BEGIN IF EXISTS (SELECT username FROM spool with (nolock) WHERE spool.username=@Username) BEGIN SELECT spool.username AS username, spool.xml AS xml FROM spool WITH (NOLOCK) WHERE spool.username=@Username; DELETE spool WITH (ROWLOCK) WHERE spool.username=@Username END ELSE BEGIN SELECT * FROM @vSpool; END END GO /******************************************************************/ /****** Object: StoredProcedure [dbo].[get_last] **/ /** Retrive the last user login **/ /******************************************************************/ CREATE PROCEDURE [dbo].[get_last] @Username varchar(250) AS BEGIN SELECT last.seconds AS seconds, last.state AS state FROM last WITH (NOLOCK) WHERE last.username=@Username; END GO /******************************************************************/ /****** Object: StoredProcedure [dbo].[get_roster] **/ /** Retrive the user roster **/ /******************************************************************/ CREATE PROCEDURE [dbo].[get_roster] @Username varchar(250) AS DECLARE @vRosterusers table( username varchar(1), jid varchar(1), nick varchar(1), subscription varchar(1), ask varchar(1), askmessage varchar(1), server varchar(1), subscribe varchar(1), type varchar(1)) BEGIN IF EXISTS (SELECT username FROM rosterusers with (nolock) WHERE rosterusers.username = @Username) BEGIN SELECT rosterusers.username AS username, rosterusers.jid AS jid, rosterusers.nick AS nick, rosterusers.subscription AS subscription, rosterusers.ask AS ask, rosterusers.askmessage AS askmessage, rosterusers.server AS server, rosterusers.subscribe AS subscribe, rosterusers.type AS type FROM rosterusers WITH (NOLOCK) WHERE rosterusers.username = @Username; END ELSE BEGIN SELECT * FROM @vRosterusers END END GO /******************************************************************/ /****** Object: StoredProcedure [dbo].[get_roster_by_jid] **/ /** Retrive the user roster via JID **/ /******************************************************************/ CREATE PROCEDURE [dbo].[get_roster_by_jid] @Username varchar(200), @JID varchar(250) AS DECLARE @vRosterusers table( username varchar(1), jid varchar(1), nick varchar(1), subscription varchar(1), ask varchar(1), askmessage varchar(1), server varchar(1), subscribe varchar(1), type varchar(1)) BEGIN IF EXISTS (SELECT username FROM rosterusers with (nolock) WHERE (rosterusers.username = @Username) AND (rosterusers.jid = @JID)) BEGIN SELECT rosterusers.username AS username, rosterusers.jid AS jid, rosterusers.nick AS nick, rosterusers.subscription AS subscription, rosterusers.ask AS ask, rosterusers.askmessage AS askmessage, rosterusers.server AS server, rosterusers.subscribe AS subscribe, rosterusers.type AS type FROM rosterusers WITH (NOLOCK) WHERE (rosterusers.username = @Username) AND (rosterusers.jid = @JID); END ELSE BEGIN SELECT * FROM @vRosterusers END END GO /******************************************************************/ /****** Object: StoredProcedure [dbo].[get_roster_jid_groups] **/ /** Retrieve the user roster groups **/ /******************************************************************/ CREATE PROCEDURE [dbo].[get_roster_jid_groups] @Username varchar(200) AS DECLARE @vrostergroups table( jid varchar(1), grp varchar(1)) BEGIN IF EXISTS (SELECT username FROM rostergroups with (nolock) WHERE rostergroups.username = @Username) BEGIN SELECT rostergroups.jid AS jid, rostergroups.grp AS grp FROM rostergroups WITH (NOLOCK) WHERE rostergroups.username = @Username; END ELSE BEGIN SELECT * FROM @vrostergroups END END GO /******************************************************************/ /****** Object: StoredProcedure [dbo].[get_roster_groups] **/ /** Retrive the user roster groups **/ /******************************************************************/ CREATE PROCEDURE [dbo].[get_roster_groups] @Username varchar(200), @JID varchar(250) AS DECLARE @vrostergroups table( grp varchar(1)) BEGIN IF EXISTS (SELECT username FROM rostergroups with (nolock) WHERE rostergroups.username = @Username) BEGIN SELECT rostergroups.grp AS grp FROM rostergroups WITH (NOLOCK) WHERE (rostergroups.username = @Username) AND (rostergroups.jid = @JID); END ELSE BEGIN SELECT * FROM @vrostergroups END END GO /******************************************************************/ /****** Object: StoredProcedure [dbo].[get_rostergroup_by_jid] **/ /** Retrive the user roster groups via JID **/ /******************************************************************/ CREATE PROCEDURE [dbo].[get_rostergroup_by_jid] @Username varchar(250), @JID varchar(250) AS DECLARE @vrostergroups table(grp varchar(1)) BEGIN IF EXISTS (SELECT username FROM rostergroups with (nolock) WHERE rostergroups.username=@Username AND rostergroups.jid=@JID) BEGIN SELECT rostergroups.grp AS grp FROM rostergroups WITH (NOLOCK) WHERE rostergroups.username=@Username AND rostergroups.jid=@JID; END ELSE BEGIN SELECT * FROM @vrostergroups END END GO /******************************************************************/ /****** Object: StoredProcedure [dbo].[get_subscription] **/ /** Retrive the user subscription requests **/ /******************************************************************/ CREATE PROCEDURE [dbo].[get_subscription] @Username varchar(250), @JID varchar(250) AS DECLARE @vrosterusers table( subscription varchar(1)) BEGIN IF EXISTS (SELECT username FROM rosterusers with (nolock) WHERE rosterusers.username=@Username AND rosterusers.jid=@JID) BEGIN SELECT rosterusers.subscription AS subscription FROM rosterusers WITH (NOLOCK) WHERE rosterusers.username=@Username AND rosterusers.jid=@JID; END ELSE BEGIN SELECT * FROM @vrosterusers END END GO /******************************************************************/ /****** Object: StoredProcedure [dbo].[list_users] **/ /** Retrieve a list of all users **/ /******************************************************************/ CREATE PROCEDURE [dbo].[list_users] AS BEGIN SELECT users.username AS username FROM users WITH (NOLOCK); END GO /******************************************************************/ /****** Object: StoredProcedure [dbo].[set_last] **/ /** Update users last login status **/ /******************************************************************/ CREATE PROCEDURE [dbo].[set_last] @Username varchar(250), @Seconds varchar(50), @State varchar(100) AS BEGIN IF EXISTS (SELECT username FROM [last] WITH (NOLOCK) WHERE username=@Username) BEGIN UPDATE [last] SET [last].username = @Username, [last].seconds = @Seconds, [last].state = @State WHERE last.username=@Username; END ELSE BEGIN INSERT INTO [last] ( [last].username, [last].seconds, [last].state ) VALUES ( @Username, @Seconds, @State ) END END GO /******************************************************************/ /****** Object: StoredProcedure [dbo].[set_private_data] **/ /** store user private data by namespace **/ /******************************************************************/ CREATE PROCEDURE [dbo].[set_private_data] @Username varchar(250), @Namespace varchar(250), @Data varchar(8000) AS BEGIN IF EXISTS (SELECT username FROM private_storage with (nolock) WHERE private_storage.username = @Username AND private_storage.namespace = @Namespace) BEGIN UPDATE [private_storage] SET [private_storage].username = @Username, [private_storage].namespace = @Namespace, [private_storage].data = @Data WHERE private_storage.username = @Username AND private_storage.namespace = @Namespace; END ELSE BEGIN INSERT INTO [private_storage] ( [private_storage].username, [private_storage].namespace, [private_storage].data ) VALUES ( @Username, @Namespace, @Data ) END END GO /******************************************************************/ /****** Object: StoredProcedure [dbo].[get_private_data] **/ /** Retrieve user private data by namespace **/ /******************************************************************/ CREATE PROCEDURE [dbo].[get_private_data] @Username varchar(250), @Namespace varchar(250) AS BEGIN SELECT private_storage.data AS data FROM private_storage WITH (NOLOCK) WHERE username=@Username and namespace=@Namespace; END GO /***************************************************************/ /****** Object: StoredProcedure [dbo].[del_user_storage] ******/ /** Delete private storage area for a given user **/ /***************************************************************/ CREATE PROCEDURE [dbo].[del_user_storage] @Username varchar(250) AS BEGIN DELETE FROM [private_storage] WITH (ROWLOCK) WHERE [private_storage].username=@Username; END GO /******************************************************************/ /****** Object: StoredProcedure [dbo].[set_vcard] **/ /** Set the user's vCard **/ /******************************************************************/ CREATE PROCEDURE [dbo].[set_vcard] @VCard varchar(8000), @Username varchar(250), @Lusername varchar(250), @Fn varchar(8000), @Lfn varchar(250), @Family varchar(8000), @Lfamily varchar(250), @Given varchar(8000), @Lgiven varchar(250), @Middle varchar(8000), @Lmiddle varchar(250), @Nickname varchar(8000), @Lnickname varchar(250), @Bday varchar(8000), @Lbday varchar(250), @Ctry varchar(8000), @Lctry varchar(250), @Locality varchar(8000), @Llocality varchar(250), @Email varchar(8000), @Lemail varchar(250), @Orgname varchar(8000), @Lorgname varchar(250), @Orgunit varchar(8000), @Lorgunit varchar(250) AS BEGIN IF EXISTS (SELECT username FROM vcard with (nolock) WHERE vcard.username = @Username) BEGIN UPDATE [vcard] SET [vcard].username = @LUsername, [vcard].vcard = @Vcard WHERE vcard.username = @LUsername; UPDATE [vcard_search] SET [vcard_search].username = @Username, [vcard_search].lusername = @Lusername, [vcard_search].fn = @Fn, [vcard_search].lfn = @Lfn, [vcard_search].family = @Family, [vcard_search].lfamily = @Lfamily, [vcard_search].given = @Given, [vcard_search].lgiven = @Lgiven, [vcard_search].middle = @Middle, [vcard_search].lmiddle = @Lmiddle, [vcard_search].nickname = @Nickname, [vcard_search].lnickname = @Lnickname, [vcard_search].bday = @Bday, [vcard_search].lbday = @Lbday, [vcard_search].ctry = @Ctry, [vcard_search].lctry = @Lctry, [vcard_search].locality = @Locality, [vcard_search].llocality = @Llocality, [vcard_search].email = @Email, [vcard_search].lemail = @Lemail, [vcard_search].orgname = @Orgname, [vcard_search].lorgname = @Lorgname, [vcard_search].orgunit = @Orgunit, [vcard_search].lorgunit = @Lorgunit WHERE vcard_search.lusername = @LUsername; END ELSE BEGIN INSERT INTO [vcard] ( [vcard].username, [vcard].vcard ) VALUES ( @lUsername, @Vcard ); INSERT INTO [vcard_search] ( [vcard_search].username , [vcard_search].lusername , [vcard_search].fn , [vcard_search].lfn , [vcard_search].family , [vcard_search].lfamily , [vcard_search].given , [vcard_search].lgiven , [vcard_search].middle , [vcard_search].lmiddle , [vcard_search].nickname, [vcard_search].lnickname, [vcard_search].bday, [vcard_search].lbday, [vcard_search].ctry, [vcard_search].lctry, [vcard_search].locality, [vcard_search].llocality, [vcard_search].email, [vcard_search].lemail, [vcard_search].orgname, [vcard_search].lorgname, [vcard_search].orgunit, [vcard_search].lorgunit ) VALUES ( @Username, @Lusername, @Fn, @Lfn, @Family, @Lfamily, @Given, @Lgiven, @Middle, @Lmiddle, @Nickname, @Lnickname, @Bday, @Lbday, @Ctry, @Lctry, @Locality, @Llocality, @Email, @Lemail, @Orgname, @Lorgname, @Orgunit, @Lorgunit ) END END GO /******************************************************************/ /****** Object: StoredProcedure [dbo].[get_vcard] **/ /** Retrive the user's vCard **/ /******************************************************************/ CREATE PROCEDURE [dbo].[get_vcard] @Username varchar(250) AS BEGIN SELECT vcard.vcard as vcard FROM vcard WITH (NOLOCK) WHERE username=@Username; END GO /******************************************************************/ /****** Object: StoredProcedure [dbo].[get_default_privacy_list]**/ /** Retrive the user's default privacy list **/ /******************************************************************/ CREATE PROCEDURE [dbo].[get_default_privacy_list] @Username varchar(250) AS BEGIN SELECT list.name FROM privacy_default_list list WITH (NOLOCK) WHERE list.username=@Username END GO /******************************************************************/ /****** Object: StoredProcedure [dbo].[get_privacy_list_names] **/ /** Retrive the user's default privacy list names **/ /******************************************************************/ CREATE PROCEDURE [dbo].[get_privacy_list_names] @username varchar(250) AS BEGIN SELECT list.name FROM privacy_list list WITH (NOLOCK) WHERE list.username=@Username END GO /******************************************************************/ /****** Object: StoredProcedure [dbo].[get_privacy_list_id] **/ /** **/ /******************************************************************/ CREATE PROCEDURE [dbo].[get_privacy_list_id] @username varchar(250), @SName varchar(250) AS BEGIN SELECT id FROM privacy_list WHERE username=@Username AND name=@SName END GO /******************************************************************/ /****** Object: StoredProcedure [dbo].[get_privacy_list_data] **/ /** **/ /******************************************************************/ CREATE PROCEDURE [dbo].[get_privacy_list_data] @username varchar(250), @SName varchar(250) AS BEGIN SELECT l_data.t, l_data.value, l_data.action, l_data.ord, l_data.match_all, l_data.match_iq, l_data.match_message, l_data.match_presence_in, l_data.match_presence_out FROM privacy_list_data l_data (NOLOCK) WHERE l_data.id = (SELECT list.id FROM privacy_list list WHERE list.username=@username AND list.name=@SName) ORDER BY l_data.ord END GO /******************************************************************/ /****** Object: StoredProcedure [dbo].[get_privacy_list_data_by_id]**/ /** **/ /******************************************************************/ CREATE PROCEDURE [dbo].[get_privacy_list_data_by_id] @Id bigint AS BEGIN SELECT l_data.t, l_data.value, l_data.action, l_data.ord, l_data.match_all, l_data.match_iq, l_data.match_message, l_data.match_presence_in, l_data.match_presence_out FROM privacy_list_data l_data (NOLOCK) WHERE l_data.id=@ID ORDER BY l_data.ord END GO /******************************************************************/ /****** Object: StoredProcedure [dbo].[set_default_privacy_list]**/ /** **/ /******************************************************************/ CREATE PROCEDURE [dbo].[set_default_privacy_list] @username varchar(250), @Sname varchar(250) AS BEGIN IF EXISTS (SELECT username FROM privacy_default_list with (nolock) WHERE privacy_default_list.username = @Username AND privacy_default_list.name = @Sname) BEGIN UPDATE [privacy_default_list] SET [privacy_default_list].username = @Username, [privacy_default_list].name = @Sname WHERE privacy_default_list.username = @Username END ELSE BEGIN INSERT INTO [privacy_default_list] ( [privacy_default_list].username, [privacy_default_list].name ) VALUES ( @Username, @SName ) END END GO /******************************************************************/ /****** Object: StoredProcedure [dbo].[unset_default_privacy_list]**/ /** **/ /******************************************************************/ CREATE PROCEDURE [dbo].[unset_default_privacy_list] @username varchar(250) AS BEGIN DELETE FROM privacy_default_list WHERE privacy_default_list.username=@username END GO /******************************************************************/ /****** Object: StoredProcedure [dbo].[remove_privacy_list] **/ /** **/ /******************************************************************/ CREATE PROCEDURE [dbo].[remove_privacy_list] @username varchar(250), @SName varchar(250) AS BEGIN DELETE FROM privacy_list WHERE privacy_list.username=@username AND privacy_list.name=@SName END GO /******************************************************************/ /****** Object: StoredProcedure [dbo].[add_privacy_list] **/ /** **/ /******************************************************************/ CREATE PROCEDURE [dbo].[add_privacy_list] @username varchar(250), @SName varchar(250) AS BEGIN INSERT INTO privacy_list(username, name) VALUES (@username, @SName) END GO /******************************************************************/ /****** Object: StoredProcedure [dbo].[set_privacy_list] **/ /** **/ /******************************************************************/ CREATE PROCEDURE [dbo].[set_privacy_list] @Id bigint, @t char(1), @value text, @action char(1), @ord numeric, @match_all bit, @match_iq bit, @match_message bit, @match_presence_in bit, @match_presence_out bit AS BEGIN insert into privacy_list_data ( id, t, value, action, ord, match_all, match_iq, match_message, match_presence_in, match_presence_out ) values (@Id, @t, @value, @action, @ord, @match_all, @match_iq, @match_message, @match_presence_in, @match_presence_out ) END GO /******************************************************************/ /****** Object: StoredProcedure [dbo].[del_privacy_list_by_id] **/ /** **/ /******************************************************************/ CREATE PROCEDURE [dbo].[del_privacy_list_by_id] @Id bigint AS BEGIN DELETE FROM privacy_list_data WHERE privacy_list_data.id=@Id END GO /******************************************************************/ /****** Object: StoredProcedure [dbo].[del_privacy_lists] **/ /** **/ /******************************************************************/ CREATE PROCEDURE [dbo].[del_privacy_lists] @Server varchar(250), @username varchar(250) AS BEGIN DELETE FROM privacy_list WHERE username=@username DELETE FROM privacy_list_data WHERE convert(varchar,value)=@username+'@'+@Server DELETE FROM privacy_default_list WHERE username=@username END GO